package com.huidao.service;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import com.huidao.data.FoodDb;
import com.huidao.domain.Food;
import com.huidao.domain.MealsSet;

/**
 * 套餐的操作逻辑
 * @author Administrator
 *
 */
public  class MealsSetService extends FoodAndMealSetService{

	private static List<MealsSet> mealsSetList  = FoodDb.getMealsSetList();
	private static Scanner sc = new Scanner(System.in);
	private static List<Food> food  = new ArrayList<Food>();
	/**查找套餐*/
	public  MealsSet check(String mealsSetName){
		//判断输入菜品名称的合法性
		if(mealsSetName==null){
			System.out.println("输入错误，请重新输入");
			check(sc.next());
			return null;
		}
		//对所有的菜品遍历，查找到后返回该菜品对象
		for (MealsSet mealsSet : mealsSetList) {
			if (mealsSetName.equals(mealsSet.getName())) {
				System.out.println("该菜品已找到");
				return mealsSet;
			}
		}
		System.out.println("没有该套餐");
		return null;
	}
	/**增加套餐*/
	@SuppressWarnings("unused")
	public boolean add(){
		//实例化一个套餐
		System.out.println("请输入需增加套餐的名称：");
		//将要添加的套餐名字封装到套餐中
		String mealsSetName = sc.next();
		//判断输入菜品名称的合法性
		if(mealsSetName==null){
			System.out.println("输入错误，请重新输入");
			add();
			return false;
		}
		//对所有的套餐遍历
		for (MealsSet mealsSet : mealsSetList) {
			//判断套餐是否存在
			if (mealsSetName.equals(mealsSet.getName())) {
				System.out.println("该套餐已存在，请重新输入");
				add();
				return false;
			}
		}
		//将套餐的编号封装到实例的套餐中
		System.out.println("请输入该套餐的编号");
		String mealsSetId = sc.next();
		for (int i = 0; ; i++) {
			//将要添加的菜品封装到套餐中
			System.out.println("请输入添加该套餐中的菜品的名称");
			String foodName = sc.next();
			food.add(new FoodService().check(foodName));
			System.out.println("该套餐没有其他菜品，请输入0");
			if (sc.nextInt()==0) {
				break;
			}
		}
		Food [] f = new Food[food.size()];
		int num = 0;
		for (Food food : food) {
			f[num++] = food;
		}
		//将价格封装到实例好的套餐中
		System.out.println("请输入该套餐的价格");
		double mealsSetPrice = sc.nextDouble();
		MealsSet newMealsSet = new MealsSet(mealsSetId, mealsSetName, f, mealsSetPrice);
		//添加到集合中
		mealsSetList.add(newMealsSet);
		System.out.println("添加套餐成功");
		return true ; 
	}
	/**删除套餐*/
	public boolean del(){
		System.out.println("请输入需删除套餐的名称：");
		//将要删除的套餐名字封装到套餐中
		String mealsSetName = sc.next();
		//判断输入菜品名称的合法性
		if(mealsSetName==null){
			System.out.println("输入错误，请重新输入");
			del();
			return false;
		}
		//查找该套餐是否存在
		MealsSet ms = check(mealsSetName);
		if (ms ==null) {
			//不存在，请选择是否继续删除
			System.out.println("若要继续删除，请输入1");
			if (sc.nextInt()==1) {
				del();
			}
			return false;
		}
		//从集合中删除套餐
		mealsSetList.remove(ms);
		//选择是否继续删除操作
		System.out.println("删除套餐成功，若要继续删除，请输入1");
		if (sc.nextInt()==1) {
			del();
		}
		return true;
	}
	/**修改套餐价格*/
	public  boolean change(){
		System.out.println("请输入需修改套餐的名称：");
		//将要修改的套餐名字封装到套餐中
		String mealsSetName = sc.next();
		//判断输入菜品名称的合法性
		if(mealsSetName==null){
			System.out.println("输入错误，请重新输入");
			del();
			return false;
		}
		//查找该套餐是否存在
		MealsSet ms = check(mealsSetName);
		if (ms==null) {
			System.out.println("修改失败，若要继续修改，请输入1");
			if (sc.nextInt()==1) {
				change();
			}
			return false;
		}
		//修改价格，将要修改的价格传入
		System.out.println("请输入该套餐修改后的价格");
		ms.setPrice(sc.nextDouble());
		System.out.println("修改套餐成功，若要继续，请输入1");
		if (sc.nextInt()==1) {
			change();
		}
		return true;
	}
}
